package com.rainbow.support.xss.handler;

import cn.hutool.http.HtmlUtil;
import com.rainbow.support.xss.properties.XssProperties;

import java.util.Objects;

/**
 * @author rainbow
 */
public class JsonXssCleaner {

	private XssProperties xssProperties;


	public JsonXssCleaner(XssProperties xssProperties) {
		this.xssProperties=xssProperties;
	}



	/**
     * xss过滤
	 * 1.采用jsonp.clean方式,代码示例如下:
	 *   Jsoup.clean(html, baseUri, safelist, new Document.OutputSettings().prettyPrint(false));
	 * 2.采用Hutool工具类直接替换,参数中的html标签
	 * @param html 源参数
     * @return 返回处理后结果
     */
	public String escape(String html) {
		if (Objects.equals(XssProperties.XSS_HUTOOL_REPLACE_HANDLER, xssProperties.getType())) {
			return HtmlUtil.cleanHtmlTag(html);
		} else {
			return HtmlUtil.escape(html);
		}
	}

	/**
	 * xss响应结果处理
	 * @param html 源参数
	 * @return 返回处理后结果
	 */
	public String unescape(String html) {
		if (Objects.equals(XssProperties.XSS_HUTOOL_REPLACE_HANDLER, xssProperties.getType())) {
			return HtmlUtil.cleanHtmlTag(html);
		} else {
			return HtmlUtil.unescape(html);
		}
	}

}
